package com.example;

/**
 * @desc:
 * @author: Shoko
 * @date: 2025/6/13
 */
public abstract class Account {
    // 帐号
    protected int accountNumber;
    // 余额
    protected int balance;

    // 模板方法，定义利息计算流程的整体骨架
    public final void calculateAndDisplayInterest() {
        getAccountInfo();
        double interest = calculateInterest();
        displayInterest(interest);
    }

    // 抽象方法，不同账户类型实现不同的利息计算逻辑
    protected abstract double calculateInterest();

    //  protected 方法，获取账户信息（可根据实际需求完善）
    protected void getAccountInfo() {
        System.out.println("获取账户 [" + accountNumber + "] 信息，余额：" + balance);
    }

    //  protected 方法，显示利息（可根据实际需求完善展示格式等）
    protected void displayInterest(double interest) {
        System.out.println("账户 [" + accountNumber + "] 的利息为：" + interest);
    }

    // 抽象方法，获取利率（不同账户类型利率获取逻辑不同）
    protected abstract double getInterestRate();

    // setter 和 getter 方法，用于设置和获取账户属性
    public int getAccountNumber() {
        return accountNumber;
    }

    public void setAccountNumber(int accountNumber) {
        this.accountNumber = accountNumber;
    }

    public int getBalance() {
        return balance;
    }

    public void setBalance(int balance) {
        this.balance = balance;
    }
}
